package com.yq.netty.nio;

import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;

/**
 * @ClassName NIOServer
 * @Description 编写一个NIO入门案例，实现服务端和客户端的数据简单通讯-非阻塞的
 * 目的是理解，NIO非阻塞网路编程机制
 * @Author yaoqiang
 * @Date 2021/3/24 16:55
 * @Version 1.0
 */
public class NIOServer {
    public static void main(String[] args) throws  Exception {
        //创建ServerSocketChannel-》serverChannel
        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
        //得到一个Selector对象
        Selector selector = Selector.open();
        //绑定一个端口6666。在服务端监听
        serverSocketChannel.socket().bind(new InetSocketAddress(6666));
        //设置为非阻塞
        serverSocketChannel.configureBlocking(false);
        //把serverSocketChannel注册到selector中心， 事件为OP_ACCEPT
        serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);

        //循环等待客户端的连接
        while (true){
            //在这里等待1秒，如果没有事件发生，返回
            if(selector.select(3000)==0){
                System.out.println("服务器等待了3秒，无连接");
                continue;
            }
        }
//如果返回的>0,就获取到相关的selectioKey集合


    }
}
